package com.dragonsoftbravo.sqlbuilder.sql.query;

import com.dragonsoftbravo.sqlbuilder.sql.sub.GroupByConst;
import com.dragonsoftbravo.sqlbuilder.sql.sub.HavingConst;
import com.dragonsoftbravo.sqlbuilder.sql.sub.LimitConst;
import com.dragonsoftbravo.sqlbuilder.sql.sub.OrderByConst;
import com.dragonsoftbravo.sqlbuilder.sql.sub.SqlGroupBy;
import com.dragonsoftbravo.sqlbuilder.sql.sub.SqlHaving;
import com.dragonsoftbravo.sqlbuilder.sql.sub.SqlLimit;
import com.dragonsoftbravo.sqlbuilder.sql.sub.SqlOrderBy;

public class SqlQueryWhereConst extends QueryWhereConst {

	public SqlQueryWhereConst(StringBuilder sqlBuilder) {
		super(sqlBuilder);
	}

	@Override
	public LimitConst limit(int limit) {
		return new SqlLimit(sqlBuilder).limit(limit);
	}

	@Override
	public GroupByConst groupBy(String... args) {
		return new SqlGroupBy(sqlBuilder).groupBy(args);
	}

	@Override
	public GroupByConst groupBy(Iterable<String> args) {
		return new SqlGroupBy(sqlBuilder).groupBy(args);
	}

	@Override
	public OrderByConst desc(String column) {
		return new SqlOrderBy(sqlBuilder).desc(column);
	}

	@Override
	public OrderByConst asc(String column) {
		return new SqlOrderBy(sqlBuilder).asc(column);
	}

	@Override
	public HavingConst having(String... args) {
		return new SqlHaving(sqlBuilder).having(args);
	}

	@Override
	public HavingConst having(Iterable<String> args) {
		return new SqlHaving(sqlBuilder).having(args);
	}
}
